package Mementos;

import editeur.Editeur;
import IHM.IHM;
import JSON.JSONException;
import JSON.JSONObject;
import Memento.Memento;

public class memcoller implements Memento {
	int length;
	int deb;
	int fin;
	String contenu;
	int rev;
	boolean active;
	private Editeur edit;
	private IHM ihm;
	public memcoller(Editeur ed,IHM i){
		edit=ed;ihm=i;
	}
	public void execute() {
		rev=ihm.getrevision();
		ihm.setrevision(rev+1);
		active=edit.selection_active();
		if (active){
			deb=edit.get_selection_deb();
			fin=edit.get_selection_fin();
			contenu=edit.get_selection_contenu();
			edit.effacer();
			edit.selection_desactiver();
		}else deb=ihm.getcurseur_pos();
		length=edit.coller(deb);
		ihm.refresh(edit.get_buffer_contenu());
		ihm.setcurseur_pos(deb+length);
	}
	public void unexecute() {
		
		edit.selectionner(deb,deb+length);
		edit.effacer();
		if (active){
			edit.inserer(contenu, deb);
			edit.selectionner(deb,fin);
		} else edit.selection_desactiver();
		ihm.refresh(edit.get_buffer_contenu());
		if (deb>fin) ihm.color_selection(deb,fin);
		else ihm.setcurseur_pos(deb);
		ihm.setrevision(rev);
	}
	public String MementoToString() {
		return MementoString.prefix+"colle"+MementoString.suffix;
	}
	public JSONObject JSONize() throws JSONException{
		JSONObject json=new JSONObject();
		json.put("commande",MementoString.COLLER);
		return json;
	}
}